class Solution {
    public:
        void hanota(vector<int>& A, vector<int>& B, vector<int>& C) {
            move(A.size(), A, B, C);
        }
    
        void move(int n, vector<int>& A, vector<int>& B, vector<int>& C)
        {
            if(n == 0)
            {
                return;
            }
            //如果A只有一个的话，那么就直接将A中的盘子放入C中即可
            if(n == 1)
            {
                C.push_back(A.back());
                A.pop_back();
            }
            //A中有2个或者2个以上的盘子
            else 
            {
                //先将n-1个盘子放到B位置
                B.insert(B.begin(), A.begin() + 1, A.end());
                A.erase(A.begin() + 1, A.end());
                //然后将A中的一个盘子放入到C中
                C.push_back(A.back());
                A.pop_back();
                //继续递归
                move(B.size(), B, A, C);
            }
        }
    };